; ex1.yaka: 
; Analyse reussie.

; Generation :

; entete
extrn lirent:proc, ecrent:proc, ecrbool:proc, ecrch:proc, ligsuiv:proc
.model SMALL
.586

.CODE

	max:
; ouvBloc 6
enter 6,0
; iload 6
push word ptr [bp+6]

; istore -6
pop ax
mov word ptr[bp-6], ax

; iload -6
push word ptr [bp-6]

; iload 4
push word ptr [bp+4]

; isup
pop bx
pop ax
cmp ax, bx
jge $+6
push -1
jmp $+4
push 0

; iffaux SINON1
pop ax
cmp ax, 0
je SINON1

; iload -6
push word ptr [bp-6]

; ireturn 8
pop ax
mov [bp+8],ax
; goto FSI1
jmp FSI1

; SINON1 :
SINON1 :
; iload 4
push word ptr [bp+4]

; ireturn 8
pop ax
mov [bp+8],ax
FSI1 :
; fermebloc 4
leave
ret 4
; startupCode
debut :
STARTUPCODE

	main:
; ouvBloc 14
enter 14,0
; iconst 10
push word ptr 10

; iconst 20
push word ptr 20

; iconst 2
push word ptr 2

; idiv
pop bx
pop ax
cwd
idiv bx
push ax

; iadd
pop bx
pop ax
add ax, bx
push ax

; iconst 5
push word ptr 5

; idiv
pop bx
pop ax
cwd
idiv bx
push ax

; istore -2
pop ax
mov word ptr[bp-2], ax

; iload -2
push word ptr [bp-2]

; ecrireEnt
call ecrent

; aLaLigne
call ligsuiv

; iload -2
push word ptr [bp-2]

; iconst 3
push word ptr 3

; iload -2
push word ptr [bp-2]

; imul
pop bx
pop ax
imul bx
push ax

; iadd
pop bx
pop ax
add ax, bx
push ax

; iconst 10
push word ptr 10

; isub
pop bx
pop ax
sub ax, bx
push ax

; istore -4
pop ax
mov word ptr[bp-4], ax

; iload -4
push word ptr [bp-4]

; ecrireEnt
call ecrent

; aLaLigne
call ligsuiv

; iconst 2
push word ptr 2

; ineg
pop bx
mov ax, 0
sub ax, bx
push ax

; iconst 3
push word ptr 3

; ineg
pop bx
mov ax, 0
sub ax, bx
push ax

; imul
pop bx
pop ax
imul bx
push ax

; ineg
pop bx
mov ax, 0
sub ax, bx
push ax

; iconst 7
push word ptr 7

; ineg
pop bx
mov ax, 0
sub ax, bx
push ax

; isub
pop bx
pop ax
sub ax, bx
push ax

; ecrireEnt
call ecrent

; aLaLigne
call ligsuiv

; ecrireChaine "ce programme a du ecrire 4 puis 6 puis 1"
.DATA
mess0 DB "ce programme a du ecrire 4 puis 6 puis 1$"
.CODE
lea dx,mess0
push dx
call ecrch

; queue
nop
EXITCODE
End debut


